﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Dados_;
using System.ComponentModel;

namespace Negocios
{
    [DataObject]
    public class EpisodioBOMetodos
    {        
        [DataObjectMethod(DataObjectMethodType.Insert, true)]
        public bool Inserir(EpisodioBO eBO)
        {
            EpisodioSQL eSQL = new EpisodioSQL();
            EpisodiosVO eVO = new EpisodiosVO();
            eVO.Id = eBO.Id;
            eVO.Nome = eBO.Nome;
            eVO.Preco = eBO.Preco;
            eVO.Sinopse = eBO.Sinopse;
            eVO.Tempo = eBO.Tempo;
            eVO.Payperview = eBO.Payperview;
            eVO.Idprograma = eBO.Id;

            return (eSQL.Inserir(eVO) == 1);
        }
        [DataObjectMethod(DataObjectMethodType.Delete, true)]
        public bool Remover(EpisodioBO eBO)
        {
            EpisodioSQL eSQL = new EpisodioSQL();
            EpisodiosVO evo = new EpisodiosVO();
            evo.Id = eBO.Id;
            return (eSQL.Excluir(evo) == 1);

        }
        [DataObjectMethod(DataObjectMethodType.Update, true)]
        public bool Alterar(EpisodioBO eBO)
        {
            EpisodioSQL eSQL = new EpisodioSQL();
            EpisodiosVO evo = new EpisodiosVO();

            evo.Id = eBO.Id;
            evo.Nome = eBO.Nome;
            evo.Payperview = eBO.Payperview;
            evo.Preco = eBO.Preco;
            evo.Sinopse = eBO.Sinopse;
            evo.Tempo = eBO.Tempo;
            //evo.Idprograma = eBO.Programa;


            return (eSQL.Alterar(evo) == 1);

           
        }
        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public EpisodioBO Consultar(int id)
        {
            EpisodioSQL eSQL = new EpisodioSQL();
            EpisodiosVO vo = eSQL.Consultar(id);
            EpisodioBO bo = new EpisodioBO();
            bo.Id = vo.Id;
            bo.Nome = vo.Nome;
            return bo;
        }
        [DataObjectMethod(DataObjectMethodType.Select, true)]
        public List <EpisodioBO> Consultar(string nome, bool payperview, int IDprograma)
        {
            EpisodioSQL eSQL = new EpisodioSQL();
            List<EpisodiosVO> leVO = eSQL.Consultar(nome,payperview,IDprograma);
            List<EpisodioBO> leBO = new List<EpisodioBO>();

            foreach (EpisodiosVO eVO in leVO) 
                if ((eVO.Payperview == payperview) && 
                    (((eVO.Idprograma == IDprograma) && (IDprograma != 0)) || (IDprograma == 0)) && 
                    ((nome==null) || (eVO.Nome.IndexOf(nome) == 0 )))
            {
                EpisodioBO eBO = new EpisodioBO();
                ProgramaBO pBO = new ProgramaBO();

                pBO.Id = eVO.Idprograma;

                eBO.Id = eVO.Id;
                eBO.Nome = eVO.Nome;
                eBO.Payperview = eVO.Payperview;
                eBO.Preco = eVO.Preco;
                eBO.Programa = pBO;
                eBO.Sinopse = eVO.Sinopse;
                eBO.Tempo = eVO.Tempo;
                leBO.Add(eBO);
            }
            return leBO;

        }
    }
}